' valid pubkey:		"7BZ*gTLq*LKyT3GcIWH8d5JkWiklMf7Aod!lhBgJpcTRu!chtojzMg=="
' invalid pubkey:	"7CZ*gTLq*LKyT3GcIWH8d5JkWiklMf7Aod!lhBgJpcTRu!chtojzMg=="
' wrong pubkey:		"kmezbipcqrNz0F8UQmhsGS7iHiiiYFCt40VxuOTDBqvT1nw75e6FUQ=="

9178:ContentHeaderVerify should verify a validHeader.xml with the proper public key
TestLoadHeader(validHeader.xml)
TestContentHeaderVerify(7BZ*gTLq*LKyT3GcIWH8d5JkWiklMf7Aod!lhBgJpcTRu!chtojzMg==, ValidCrypto, NORMAL, 1)

9179:ContentHeaderVerify should not verify a header with a wrong public key
TestLoadHeader(validHeader.xml)
TestContentHeaderVerify(kmezbipcqrNz0F8UQmhsGS7iHiiiYFCt40VxuOTDBqvT1nw75e6FUQ==, ValidCrypto, NORMAL, 0)

9186:ContentHeaderGetAttribute should return all supported indexed attributes
TestLoadHeader(validHeader.xml)
TestContentHeaderGetAttribute(NULL, 1 DRM_HEADER_ATTRIB_VERSION, NORMAL, 2.0.0.0)
TestContentHeaderGetAttribute(NULL, 2 DRM_HEADER_ATTRIB_KID, NORMAL, ftRronf2pk+10NT1uvEerQ==)
TestContentHeaderGetAttribute(NULL, 3 DRM_HEADER_ATTRIB_LAINFO, NORMAL, http://v2srv/WM/getv2lic.asp)
TestContentHeaderGetAttribute(NULL, 4 DRM_HEADER_ATTRIB_CHECKSUM, NORMAL, LxqJxxO9QA==)
TestContentHeaderGetAttribute(NULL, 5 DRM_HEADER_ATTRIB_SECURITYVERSION, NORMAL, 2.2)

9189:ContentHeaderGetAttribute should use the attribute name if the attribute index is 'Other'
TestLoadHeader(validHeader.xml)
TestContentHeaderGetAttribute(CID, 6 DRM_HEADER_ATTRIB_OTHER, NORMAL, 188)

9190:ContentHeaderGetAttribute should be able to get the entire attribute data if it has sub nodes
TestLoadHeader(ModDataHeader.xml)
TestContentHeaderGetAttribute(OWNER, 6 DRM_HEADER_ATTRIB_OTHER, NORMAL, <NAME>V2SRV</NAME>)

9191:ContentHeaderGetAttribute should be able to get the first sub attribute using 'attr1/attr2'
TestLoadHeader(ModDataHeader.xml)
TestContentHeaderGetAttribute(OWNER/NAME, 6 DRM_HEADER_ATTRIB_OTHER, NORMAL, V2SRV)

10318:ContentHeaderGetUplink should retrieve the uplink KID when the header has one uplink KID
TestLoadHeader(uplinkHeader.xml)
TestContentHeaderGetUplink(0, "4wEEq1ixJEC1na7nmgJT5g==")

-------------------BVT ends here--------------------------

9180:ContentHeaderVerify should fail if the data section in the header is modified
TestLoadHeader(ModDataHeader.xml)
TestContentHeaderVerify(7BZ*gTLq*LKyT3GcIWH8d5JkWiklMf7Aod!lhBgJpcTRu!chtojzMg==, ValidCrypto, NORMAL, 0)

9181:ContentHeaderVerify should fail if the signature section in the header is modified
TestLoadHeader(ModSigHeader.xml)
TestContentHeaderVerify(7BZ*gTLq*LKyT3GcIWH8d5JkWiklMf7Aod!lhBgJpcTRu!chtojzMg==, ValidCrypto, NORMAL, 0)

9182:ContentHeaderVerify should fail if the header is not a well formed XML string
TestLoadHeader(NonXMLHeader.xml)
TestContentHeaderVerify(7BZ*gTLq*LKyT3GcIWH8d5JkWiklMf7Aod!lhBgJpcTRu!chtojzMg==, ValidCrypto, NORMAL)=-2147217144(0X80041108, CH_INVALID_HEADER)

9183:ContentHeaderVerify should fail if the public key is not a valid base64 string
TestLoadHeader(validHeader.xml)
TestContentHeaderVerify(7CZ*gTLq*LKyT3GcIWH8d5JkWiklMf7Aod!lhBgJpcTRu!chtojzMg==, ValidCrypto, NORMAL)

9184:ContentHeaderVerify should return INVALIDARG if any required parameter is NULL
TestContentHeaderVerify(7BZ*gTLq*LKyT3GcIWH8d5JkWiklMf7Aod!lhBgJpcTRu!chtojzMg==, ValidCrypto, NORMAL)=-2147024809(0X80070057, E_INVALIDARG)
TestLoadHeader(validHeader.xml)
TestContentHeaderVerify(NULL, ValidCrypto, NORMAL)=-2147024809(0X80070057, E_INVALIDARG)
TestContentHeaderVerify(7BZ*gTLq*LKyT3GcIWH8d5JkWiklMf7Aod!lhBgJpcTRu!chtojzMg==, NULL, NORMAL)=-2147024809(0X80070057, E_INVALIDARG)
TestContentHeaderVerify(7BZ*gTLq*LKyT3GcIWH8d5JkWiklMf7Aod!lhBgJpcTRu!chtojzMg==, ValidCrypto, NULL)=-2147024809(0X80070057, E_INVALIDARG)

9185:ContentHeaderVerify should return INVALIDARG if content header is an empty string
TestLoadHeader(EMPTY)
TestContentHeaderVerify(7BZ*gTLq*LKyT3GcIWH8d5JkWiklMf7Aod!lhBgJpcTRu!chtojzMg==, ValidCrypto, NORMAL)=-2147024809(0X80070057, E_INVALIDARG)

9213:ContentHeaderVerify should not verify a header if pubkey is an empty string
TestLoadHeader(validHeader.xml)
TestContentHeaderVerify(EMPTY, ValidCrypto, NORMAL, 0)=-2147024809(0X80070057, E_INVALIDARG)

9187:ContentHeaderGetAttribute should return an error if an indexed attribute does not exist in the header
TestLoadHeader(NoKIDHeader.xml)
TestContentHeaderGetAttribute(NULL, 2 DRM_HEADER_ATTRIB_KID, NORMAL)= -2147217148(0X80041104,CH_KID_MISSING)
TestLoadHeader(NoVersionHeader.xml)
TestContentHeaderGetAttribute(NULL, 1 DRM_HEADER_ATTRIB_VERSION, NORMAL)= -2147217149(0X80041103, CH_VERSION_MISSING)

9188:ContentHeaderGetAttribute should fail if attribute name is not null and  index is not 'other'
TestLoadHeader(validHeader.xml)
TestContentHeaderGetAttribute(Custom, 1 DRM_HEADER_ATTRIB_VERSION, NORMAL, VERSION)=-2147024809(0X80070057, E_INVALIDARG)
TestContentHeaderGetAttribute(Custom, 2 DRM_HEADER_ATTRIB_KID, NORMAL, KID)=-2147024809(0X80070057, E_INVALIDARG)

9195:ContentHeaderGetAttribute should return E_INVALIDARG if any required parameter is NULL
TestContentHeaderGetAttribute(NULL, 1 DRM_HEADER_ATTRIB_VERSION, NORMAL)=-2147024809(0X80070057, E_INVALIDARG)
TestLoadHeader(validHeader.xml)
TestContentHeaderGetAttribute(NULL, 1 DRM_HEADER_ATTRIB_VERSION, NULL)=-2147024809(0X80070057, E_INVALIDARG)
TestContentHeaderGetAttribute(NULL, 6 DRM_HEADER_ATTRIB_OTHER, NORMAL)=-2147024809(0X80070057, E_INVALIDARG)

9196:ContentHeaderGetAttribute should return E_INVALIDARG if content header is empty
TestLoadHeader(EMPTY)
TestContentHeaderGetAttribute(NULL, 1 DRM_HEADER_ATTRIB_VERSION, NORMAL)=-2147024809(0X80070057, E_INVALIDARG)

9197:ContentHeaderGetAttribute should fail if attribute name is empty
TestLoadHeader(validHeader.xml)
TestContentHeaderGetAttribute(EMPTY, 6 DRM_HEADER_ATTRIB_OTHER, NORMAL)=-2147024809(0X80070057, E_INVALIDARG)

9198:ContentHeaderGetAttribute should return E_INVALIDARG for invalid attribute index
TestLoadHeader(validHeader.xml)
TestContentHeaderGetAttribute(EMPTY, 0 Invalid Attribute, NORMAL)=-2147024809(0X80070057, E_INVALIDARG)
TestContentHeaderGetAttribute(EMPTY, 10 Invalid Attribute, NORMAL)=-2147024809(0X80070057, E_INVALIDARG)

9199:ContentHeaderGetAttribute should return an error code if header is not a well formed XML string
TestLoadHeader(NonXMLHeader.xml)
TestContentHeaderGetAttribute(NULL, 2 DRM_HEADER_ATTRIB_KID, NORMAL)=-2147217144(0X80041108,CH_INVALID_HEADER)

11422:ContentHeaderGetUplink should fail if asking for the second uplink KID but only one exists
TestLoadHeader(uplinkHeader.xml)
TestContentHeaderGetUplink(1, EMPTY)=-2147172273(0X8004C04F, DRM_E_XMLNOTFOUND)

11423:ContentHeaderGetUplink should fail if no uplink KID exists
TestLoadHeader(validHeader.xml)
TestContentHeaderGetUplink(0, EMPTY)=-2147172273(0X8004C04F, DRM_E_XMLNOTFOUND)

11424:ContentHeaderGetUplink can get the second uplink kid when the header has two KID's
TestLoadHeader(twouplinks.xml)
TestContentHeaderGetUplink(1, "5KEEq2jxJEc1na7nmgJT5g==")
